package com.example;

import javafx.geometry.Rectangle2D;
import javafx.stage.Screen;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * <p>存储截图要用的一些相关属性</p>
 *
 * @author dc
 * @date 2025-09-16
 **/
public class CaptureProperty {
    /**
     * 屏幕宽度
     */
    public static int screenWidth;
    /**
     * 屏幕高度
     */
    public static int screenHeight;
    /**
     * 屏幕X轴缩放比例
     */
    public static double scaleX;
    /**
     * 屏幕Y轴缩放比例
     */
    public static double scaleY;

    /**
     * 截图活动状态
     */
    public static volatile boolean isCaptureActive = false;
    
    /**
     * 是否框选结束状态
     */
    public static volatile boolean isSelected = false;
    /**
     * 是否处于绘画状态
     */
    public static volatile boolean isDrawing = false;

    /**
     * 是否处于滚动截图
     */
    public static volatile boolean isScrollingActive = false;

    /**
     * <p>图片截取高度，单位像素，一次滚动距离大概为100px </p>
     * <p>此值应该至少是一次滚动距离的两倍，这样每一次截图都会将下一次滚动的距离截进去，
     * 而因为滚动限流，下一次滚动开始前，上一次滚动必定已经完成，将下一次滚动的区域暴露的出来，
     * 所以即使截图速度过快，在下一次滚动前就完成截图了，也能保证不会漏截。</p>
     */
    public static final int SCROLL_FRAME_HEIGHT = 200;

    static {
        Screen screen = Screen.getPrimary();
        System.out.println(screen.getDpi());
        scaleX = screen.getOutputScaleX();
        scaleY = screen.getOutputScaleY();

        System.out.println("scaleX:" + scaleX + " scaleY:" + scaleY);
        // 获取主屏幕尺寸
        Rectangle2D screenBounds = screen.getBounds();
        screenWidth = (int) screenBounds.getWidth();
        screenHeight = (int) screenBounds.getHeight();
        System.out.println("screenWidth:" + screenWidth + " screenHeight:" + screenHeight);
    }
    
}
